package com.linkgie.galaxyframework.crypto;

import com.linkgie.galaxyframework.crypto.spi.CryptoServiceProvider;

/**
 * 算法编解码器；
 * <p>
 * 
 * 提供从“密码算法名称”到“密码算法编码”的转换；
 * <p>
 * 
 * “密码算法名称”用于在提供密码服务调用时标识不同的密码算法；<br>
 * 
 * “密码算法编码”用于保存或者传输由密码服务生成的密码数据时标识不同的密码算法；
 * 
 * <p>
 * 
 * 此类型被设计用于面向密码提供者 {@link CryptoServiceProvider} 实现密码算法服务；
 * 
 * @author liso
 *
 */
public interface AlgorithmCodec {

	/**
	 * 根据算法名称返回对应的算法；<br>
	 * 如果不支持该算法，则返回 null；
	 * 
	 * @param name
	 * @return
	 */
	Algorithm getAlgorithm(String name);

	/**
	 * 根据算法编号返回对应的算法；<br>
	 * 如果不支持该算法，则返回 null；
	 * 
	 * @param code
	 * @return
	 */
	Algorithm getAlgorithm(short code);

}
